iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 22
0
IoT

樹莓派實驗室系列 第 22

Day22 - Home Assistant DHT automation

  • 分享至 

  • xImage
  •  

今天來接續昨天的DHT22,我們可以透過automation.yaml來簡單設定一個自動化,由於很多integrations都沒有辦法透過UI,像我們第一天那麼無痛地設定自動化,我們只能透過編輯yaml來進行。

今天的自動化就是如果DHT22感測溫度小於華氏70度,就打開燈(很沒邏輯沒錯,但目前只能先將就一下了)

昨天我們已經在configuration.yaml新增了DHT22 integration,今天我們要在automation.yaml新增trigger和action,condition可自行決定是否要新增。

- alias: Turn Lights On when Temperature below 70
  trigger:
  - platform: template
    value_template: '{{ states("sensor.temperature") | int < 70 }}'
  action:
  - service: light.turn_on
    data:
      entity_id: light.305
  mode: single

我們先回憶一下之前使用UI介面設定日落就開燈的自動化,結果在automation.yaml也會產出結果,如下圖:

這個id的作用一開始讓我很困惑,根據討論區的說法,只是為了在UI automation editor編輯並且是在UI設定好automation時就自動產出,所以我們可以不用理會它。
這也造成一個對我而言很怪的點,Home Assistant找automation是透過alias而不是id。從Home Assistant網站上的example就可以看出都是使用alias,卻不是利用一般大家認知的id。

下圖也可以看出,因為我手動在automation.yaml設定,所以我在UI的automation,會顯示無法編輯。

再來提一下alias,我設定的alias如果沒有額外的客製化,他在介面上顯示跟在內部找尋automation都會是同一個,也就是說我這邊的alias是Turn Lights On when Temperature below 70,介面上也會是相同的,但如果我現在想要修改alias,卻發現我還有多個連動的自動化,這樣修改很不便,我們這時可以透過friendly name來修改介面顯示的名稱。

所以我們可以更改成以下客製化方式,利用friendly_name改變顯示的名稱。

log可以在home-assistant.log找到出錯的原因。

我在設定trigger卡了一陣,因為不太了解判斷式的格式,還有感測器接收到的值應該是哪種,所以出現了以下錯誤。

如果想要得到更詳細的template說明,可以參閱
https://www.home-assistant.io/docs/configuration/templating

小提醒一下,上面states("sensor.temperature"),我原本是寫states.sensor.dht_sensor_temperature.state,不過官網上有特別提醒要盡量使用前一種,也就是states(), is_state(), state_attr() and is_state_attr()等等, 這樣可以避免在entity還沒準備好的時候有錯誤與錯誤訊息(像是在Home Assistant啟動的時候)。

最後我們儲存automation.yaml檔之後reload,就可以到開發工具看到他出現在實體
automation.turn_lights_on_when_temperature_below_70,在歷史和日誌也可以看到他的開啟狀態以及他是否被觸發。

今天完成了手動在automation.yaml設定自動化,並且成功讓DHT22連動了智慧燈泡(有點奇怪的連接,但至少串連了),明天再繼續其他實驗。


上一篇
Day21 - Home Assistant用yaml新增DHT22
下一篇
Day23 - Home Assistant 連接 app通知
系列文
樹莓派實驗室30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言